using CLELCore.Assembly.BlobStreams;

namespace CLELCore.Assembly.Descriptors.ClassDescriptors
{
	public class ByRefClassDescriptor : ClassDescriptor
	{
		private ClassDescriptor _cd;
		public ClassDescriptor ClassDescriptor
		{
			get
			{
				return _cd;
			}
			set
			{
				_cd = value;
			}
		}
 
		public ByRefClassDescriptor(ClassDescriptor cd) : base(ClassDescriptor.BYREF_CLASSDESCRIPTOR)
		{
			_cd = cd;
		}

		public override ClassDescriptor Copy()
		{
			return (ClassDescriptor)new ByRefClassDescriptor(_cd);
		}

		public override byte [] ToBytes()
		{
			byte [] temp = _cd.ToBytes();
			byte [] ret = new byte[temp.Length+1];
			ret[0] = BlobElementType.ELEMENT_TYPE_BYREF;
			int i;
			for(i = 0;i < temp.Length;i++)
			{
				ret[i+1] = temp[i];
			}
			/*
			ret[1] = _token.Table;
			int row = _token.Row;
			ret[2] = Bits.ByteFromInt(2,row);
			ret[3] = Bits.ByteFromInt(1,row);
			ret[4] = Bits.ByteFromInt(0,row);
			ret[5] = BlobElementType.ELEMENT_TYPE_END;
			*/
			return ret;
		}
	}
}
